import request from '@/utils/http'
import { BaseResult, PageResult } from '@/types/axios'

// 用户列表相关API
export interface UserListParams {
  keyword?: string
  state?: string
  privateChatState?: string
  groupChatState?: string
  page: number
  pageSize: number
}

export interface UserItem {
  buyerUserId: number
  account?: string
  name?: string
  phone?: string
  sex?: string
  memberLevelName?: string
  terminal?: number
  state: number
  balance?: number
  frozenBalance?: number
  ifBlack?: number
  // 新增的字段
  privateChat?: number
  groupChat?: number
  privateChatTime?: string
  groupChatTime?: string
  // 其他可能的字段
  [key: string]: any
}

export interface UserListResponse {
  list: UserItem[]
  total: number
}

// 用户状态更新参数
export interface UpdateUserStatusParams {
  buyerUserId: number
  state: number // 0-禁用 1-启用
}

// 用户禁言参数
export interface UserBanParams {
  account: string
  c2CmsgNospeakingTime: number
  groupmsgNospeakingTime: number
  stopSpeeckType?: number // 是否禁言,1-是,0否
  groupmsgNospeakingTimeYMD?: number // 群聊禁言时长(完整的时间)
  c2CmsgNospeakingTimeYMD?: number // 单聊禁言时长(完整的时间)
}

// 用户动态封禁参数
export interface BuyerTrendsParam {
  buyerUserId: number
  state: number // 1-启用 0-禁用
}

// 用户IM状态参数
export interface BuyerImParam {
  buyerUserId: number
  status: number // 1-启用 0-禁用
}

// 用户其他功能参数
export interface BuyerOtherParam {
  buyerUserId: number
  status: number // 1-启用 0-禁用
}

// 用户解除禁言参数
export interface UserUnbanParams {
  account: string
  stopSpeeckType: number // 是否禁言,1-是,0否
  c2CmsgNospeakingTime?: number // 单聊禁言时长（秒），解除时通常设为0
  groupmsgNospeakingTime?: number // 群聊禁言时长（秒），解除时通常设为0
}

// 钱包冻结参数
export interface WalletFreezeParams {
  buyerUserId: number
  actionType: number // 1-解冻, 2-冻结
  amount: number
  expireTime?: number
  reason?: string
}

// 钱包冻结响应
export interface WalletFreezeResponse {
  code: String
  message: string
  data: any
}

// 用户信息管理相关接口
export interface UserInfo {
  buyerUserId?: number
  name: string
  sex: string
  birthday?: string
  age?: number
  phone: string
  headImage?: string
  backgroundImage?: string
  state: number
  ifBlack: number
  remark?: string
  province?: string
  city?: string
  userAccount: string
  createTime?: string
}

export interface UserInfoListParams {
  page: number
  pageSize: number
  buyerUserId?: number
  phone?: string
  state?: number
  isBlack?: number
  startTime?: string
  endTime?: string
}

export interface UserInfoListResponse {
  list: UserInfo[]
  total: number
}

export class UserService {
  // 获取用户列表
  static getUserList(params: UserListParams) {
    return request.post<BaseResult<PageResult<UserItem>>>({
      url: '/buyer/getAll',
      data: params
    })
  }

  // 更新用户状态（禁用/启用）
  static updateUserStatus(params: UpdateUserStatusParams) {
    return request.post<BaseResult>({
      url: '/userManage/buyerUser/update',
      data: params
    })
  }

  // 用户禁言设置
  static setUserBan(params: UserBanParams) {
    return request.post<BaseResult>({
      url: '/userManage/stop/speck',
      data: params
    })
  }

  // 用户解除禁言
  static setUserUnban(params: UserUnbanParams) {
    return request.post<BaseResult>({
      url: '/userManage/stop/speck/delete',
      data: params
    })
  }

  // 获取用户列表（新的禁言管理接口）
  static getUserBanList(params: UserListParams) {
    return request.get<BaseResult<PageResult<UserItem>>>({
      url: '/userManage/getUserList',
      params: params
    })
  }
  
  // 钱包冻结/解冻操作
  static freezeWallet(params: WalletFreezeParams) {
    return request.post<WalletFreezeResponse>({
      url: '/buyerWallet/wallet/freezed',
      data: params
    })
  }
  
  // 用户信息管理相关接口
  // 获取用户信息列表
  static getUserInfoList(params: UserInfoListParams) {
    return request.post<BaseResult<PageResult<UserInfo>>>({
      url: '/userManage/getUserInfo',
      data: params
    })
  }


  // 编辑用户信息
  static updateUserInfo(data: UserInfo) {
    return request.post<BaseResult>({
      url: '/userManage/updateUserBaseInfo',
      data: data
    })
  }

  // 修改用户支付密码
  static adminModifyPayPassword(data: {
    buyerUserId: number;
    encryptedPayPassword: string;
    encryptedConfirmPayPassword: string;
  }) {
    return request.post<BaseResult>({
      url: '/buyerWallet/payPassword/adminModify',
      data: data
    })
  }

  // 获取实名认证信息
  static getAuthInfo(userId: number) {
    console.log('请求发送了')
    return request.get<BaseResult<any>>({
      url: '/userRealnameAuth/getAuthInfo',
      params: { userId }
    })
  }

  // 更新用户动态状态
  static updateUserTrends(params: BuyerTrendsParam) {
    return request.post<BaseResult>({
      url: '/userManage/update/trends',
      data: params
    })
  }
  
  // 更新用户IM状态
  static updateUserIM(params: BuyerImParam) {
    return request.post<BaseResult>({
      url: '/userManage/update/im',
      data: params
    })
  }

  // 更新用户其他社交功能状态
  static updateOther(params: BuyerOtherParam) {
    return request.post<BaseResult>({
      url: '/userManage/updateOther',
      data: params
    })
  }

}
